The advent of network and virtualization computing technologies have enabled the implementation of relatively large distributed computing systems that are extensible to manage the ever changing needs of users while providing enhanced reliability and availability. For example, the advent of virtualization technologies has provided for virtualized resources that may be added or removed on demand according to ever changing needs of applications or services executed on those resources. Additionally, currently available network topologies, such as the Internet and private networks, have provided means for remotely accessing large amounts of diverse information and computing power. These distributed computing systems are typically implemented using multiple computing devices that function in a collaborative manner to provide services for multiple users.